Détection automatique de faux billets

Présentation du projet

Objectif

ONCFM - l’Organisation nationale de lutte contre le faux-monnayage
Cette institution a pour objectif de mettre en place des méthodes d’identification des contrefaçons des billets en euros.

Mission

Une modélisation qui serait capable d’identifier automatiquement les vrais des faux billets à partir des caractéristiques géométriques des billets

Déscription de données


Les caractéristiques géométriques sur un billet :

● length : la longueur du billet (en mm) ;
● height_left : la hauteur du billet (mesurée sur le côté gauche, en mm) ;
● height_right : la hauteur du billet (mesurée sur le côté droit, en mm) ;
● margin_up : la marge entre le bord supérieur du billet et l’image de celui-ci (en mm) ;
● margin_low : la marge entre le bord inférieur du billet et l’image de celui-ci (en mm) ;
● diagonal : la diagonale du billet (en mm).


Fichier pour paramétrisation

Nous avons un fichier d’exemple contenant 1 500 billets, qu’on peut utiliser comme bon pour paramétrer l’algorithme d’identification des contrefaçons des billets en euros.
Parmi 1 500 billets fournis , 1 000 sont vrais et 500 sont faux ; une colonne a été ajoutée pour préciser la nature du billet.

Déscription du projet

Le projet est présenté dans 10 parites (chaque partie dans un onglet correspondant):
- Présentation du projet
- Préparation de données
- Analyse descriptive des données
- ACP : Analyse en composantes principales
- Méthode de prédiction : Régression logistique
- Méthode de prédiction : K-means
- Comparaison des methodes
- Conclusion
- Déploiement du Testing
- Algorithmede détection de faux billets

Préparation des données

Dans cette partie on va explorer et traiter le fichier d’exemple afin de le préparer à l’application des méthodes de clustering et de la prévision.
Les étapes de ce traitement sont suivantes:

  • Importation des données

  • Imputation des données manquantes :

    • Méthode de la régrassion linéaire de l’imputation des données manquantes
    • Méthodes alternatives de l’imputation des données manquantes
    • Résumé

Importation des données

Les premières lignes du fichier d’exemple contenant 1 500 billets : 1 000 sont vrais et 500 sont faux.
La nature de billet est indiquée dans la colonne is_genuine.

Les billets
is_genuine diagonal height_left height_right margin_low margin_up length
True 171.81 104.86 104.95 4.52 2.89 112.83
True 171.46 103.36 103.66 3.77 2.99 113.09
True 172.69 104.48 103.5 4.4 2.94 113.16
True 171.36 103.91 103.94 3.62 3.01 113.51
True 171.73 104.28 103.46 4.04 3.48 112.54
True 172.17 103.74 104.08 4.42 2.95 112.81
Description des variables
is_genuine diagonal height_left height_right margin_low margin_up length
Length:1500 Min. :171.0 Min. :103.1 Min. :102.8 Min. :2.980 Min. :2.270 Min. :109.5
Class :character 1st Qu.:171.8 1st Qu.:103.8 1st Qu.:103.7 1st Qu.:4.015 1st Qu.:2.990 1st Qu.:112.0
Mode :character Median :172.0 Median :104.0 Median :103.9 Median :4.310 Median :3.140 Median :113.0
NA Mean :172.0 Mean :104.0 Mean :103.9 Mean :4.486 Mean :3.151 Mean :112.7
NA 3rd Qu.:172.2 3rd Qu.:104.2 3rd Qu.:104.2 3rd Qu.:4.870 3rd Qu.:3.310 3rd Qu.:113.3
NA Max. :173.0 Max. :104.9 Max. :105.0 Max. :6.900 Max. :3.910 Max. :114.4
NA NA NA NA NA’s :37 NA NA


Dans la description du fichier fourni on découvre 37 données manquantes dans la colonne margin_low.



1. Imputation des données manquantes

Dans les onglets au-dessous les différentes méthodes de l’imputation des données manquantes ont été présentés.


Méthode de la régrassion linéaire de l’imputation des données manquantes

L’imputation de ces données sera réalisée par la prevision.
Pour définir cette prévision on va appliquer la regression linéaire multiple de “margin_low”
en fonction des autres paramètres

Tout d’abord on sélectionne les données complétes
Puis, on selectionne des paramètres géométriques parmi les colonnes du dataframe de notre sélection

Les données de source
is_genuine diagonal height_left height_right margin_low margin_up length
Length:1463 Min. :171.0 Min. :103.1 Min. :102.9 Min. :2.980 Min. :2.270 Min. :109.5
Class :character 1st Qu.:171.8 1st Qu.:103.8 1st Qu.:103.7 1st Qu.:4.015 1st Qu.:2.990 1st Qu.:112.0
Mode :character Median :172.0 Median :104.0 Median :103.9 Median :4.310 Median :3.140 Median :113.0
NA Mean :172.0 Mean :104.0 Mean :103.9 Mean :4.486 Mean :3.153 Mean :112.7
NA 3rd Qu.:172.2 3rd Qu.:104.2 3rd Qu.:104.2 3rd Qu.:4.870 3rd Qu.:3.315 3rd Qu.:113.3
NA Max. :173.0 Max. :104.9 Max. :105.0 Max. :6.900 Max. :3.910 Max. :114.3
Les paramètres géométriques
diagonal height_left height_right margin_low margin_up length
Min. :171.0 Min. :103.1 Min. :102.9 Min. :2.980 Min. :2.270 Min. :109.5
1st Qu.:171.8 1st Qu.:103.8 1st Qu.:103.7 1st Qu.:4.015 1st Qu.:2.990 1st Qu.:112.0
Median :172.0 Median :104.0 Median :103.9 Median :4.310 Median :3.140 Median :113.0
Mean :172.0 Mean :104.0 Mean :103.9 Mean :4.486 Mean :3.153 Mean :112.7
3rd Qu.:172.2 3rd Qu.:104.2 3rd Qu.:104.2 3rd Qu.:4.870 3rd Qu.:3.315 3rd Qu.:113.3
Max. :173.0 Max. :104.9 Max. :105.0 Max. :6.900 Max. :3.910 Max. :114.3





2. Modèle de la régression linéaire multiple

On crée un modèle de la régression linéaire multiple de ‘margin_low’ en fonction des autres variables. Ce modèle servira à établir une formule de prévision.




## 
## Call:
## lm(formula = margin_low ~ diagonal + height_left + height_right + 
##     margin_up + length, data = billets_sn_sgen)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.47234 -0.31707 -0.04168  0.27353  1.97084 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  22.99484    9.65555   2.382  0.01737 *  
## diagonal     -0.11106    0.04144  -2.680  0.00744 ** 
## height_left   0.18412    0.04477   4.113 4.13e-05 ***
## height_right  0.25714    0.04301   5.978 2.84e-09 ***
## margin_up     0.25619    0.06437   3.980 7.23e-05 ***
## length       -0.40910    0.01808 -22.627  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4807 on 1457 degrees of freedom
## Multiple R-squared:  0.4773, Adjusted R-squared:  0.4755 
## F-statistic: 266.1 on 5 and 1457 DF,  p-value: < 2.2e-16

3. Estimation du modele de la régression linéaire multiple

Pour tester la significativité du modèle, nous avons 2 niveaux :

  • Un test global, obtenu grâce à une statistique de Fisher
  • Un test de significativité sur chacune des variables explicatives prises une à une

Le coefficient de déterminisation \(R^{2}\) = 48 %

On rappelle que le coefficient de détermination c’est la proportion de la somme des carrés expliquées sur la somme de carrés totale.
Plus il s’approche à 1 (100%) - plus de variation sera expliquée par le modèle.

Le test F rapporté au bas du sommaire des résultats de lm correspond à l’hypothèse nulle d’absence d’effet pour tous les prédicteurs.
Le p-value = 2.2 \(e^{-16}\) => inférieure au niveau de confience du test - 0.05(5%)

On peut aussi obtenir un tableau d’ANOVA conventionnel en appliquant la fonction anova au résultat de notre modèle

## Analysis of Variance Table
## 
## Response: margin_low
##                Df Sum Sq Mean Sq F value    Pr(>F)    
## diagonal        1   8.01   8.014  34.678 4.822e-09 ***
## height_left     1  59.82  59.823 258.863 < 2.2e-16 ***
## height_right    1  68.63  68.630 296.972 < 2.2e-16 ***
## margin_up       1  52.73  52.729 228.164 < 2.2e-16 ***
## length          1 118.32 118.316 511.968 < 2.2e-16 ***
## Residuals    1457 336.71   0.231                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Ce tableau indique quelle portion de la somme des écarts au carré est expliquée par chacun des prédicteurs, ainsi que la portion résiduelle.

La significativité des paramètres

Un modèle correct doit avoir des paramètres significatifs.

Cependant, on constate que la variable ‘diogonal’ est moins significative car son p-value = O.07 (7%)

On a interèt de retirer cette variable de notre formule de la régression pour que l’erreur de prévision ne soit pas élévée à cause d’elle.

## 
## Call:
## lm(formula = margin_low ~ height_left + height_right + margin_up + 
##     length, data = billets_sn_sgen)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.54265 -0.31879 -0.04392  0.27593  1.99858 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   5.26563    7.04828   0.747    0.455    
## height_left   0.17795    0.04481   3.971 7.49e-05 ***
## height_right  0.25500    0.04310   5.917 4.09e-09 ***
## margin_up     0.25880    0.06450   4.012 6.32e-05 ***
## length       -0.41364    0.01804 -22.930  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4817 on 1458 degrees of freedom
## Multiple R-squared:  0.4748, Adjusted R-squared:  0.4733 
## F-statistic: 329.5 on 4 and 1458 DF,  p-value: < 2.2e-16

La qualité prèdictive du modèle diminue peut être controlé par le coefficient de détermination ajusté car cette fois-ci on considere le nombre de variables explicatives :
dans notre cas il est égale 47,3% et il est proche de 47,4%


Analyse sur les valeurs influentes

Le niveau de confience du test on considere alpha= 5%
Le n = Nombre des billets
p = Nombre des variables

La matrice Hat est la matrice de projection qui exprime les valeurs des observations dans la variable indépendante en termes de combinaisons linéaires des vecteurs de colonne de la matrice du modèle qui contient les observations pour chacune des variables multiples sur lesquelles on régresse. (The hat matrix is the projection matrix that expresses the values of the observations in the independent variable in terms of the linear combinations of the column vectors of the model matrixwhich contains the observations for each of the multiple variables you are regressing on)

Les termes diagonaux de H (hat matrix) sont appelés “leviers des observations” : \(H_{ii} =x_{i}(X^{⊤}X)^{−1}x^T_{i}\)

\(x_{i}=(x_{i1},…,x_{ip})^{⊤}\)

Par la définition de Belsey on considére l’observation i comme atypique si :

\(h_{ii}\) > 2*\(\frac{p}{n}\) - seuil des leviers

Chaque point de l’ensemble de données tente de tirer la ligne des moindres carrés ordinaires (MCO) vers lui-même. Cependant, les points plus éloignés à l’extrême des valeurs regressor auront plus d’effet de levier.

Visualisation des leviers pour chaque billets et le seuil des leviers


Sélection des billets pour lesquels le levier est supérieur au seuil :

##  [1] 0.016221380 0.008485757 0.012658084 0.009161085 0.008209498 0.010291302
##  [7] 0.009501807 0.010701678 0.009469331 0.009076958 0.008295419 0.009068359
## [13] 0.010554252 0.011801174 0.009611529 0.008211679 0.011344283 0.009697132
## [19] 0.008856933 0.008695953 0.009088304 0.008897220 0.013341442 0.008270992
## [25] 0.009155900 0.009411147 0.008349194 0.009562824 0.008827645 0.008906699
## [31] 0.009073827 0.013775203 0.009590639 0.009623035 0.014634815 0.008243225
## [37] 0.008792373

Calcule de résidus studentisés
On considère les résidus studentisés pour évaluer si une observation est atypique.
Lignes rouge - les seuils de résidus studentisés

Les points possédant une valeur d’effet de levier importante ne sont pas nécessairement des valeurs aberrantes.
La mesure de l’influence d’une observation s’effectue à l’aide de la distance de Cook.

Distance de Cook

Maintenant on peut calculer la distance de Cook et détecter les observations influentes (qui dépasse le seuil de Cook(ligne rouge)) qui sont aberrant au vu du modèle estimé.



Les billets atypiques au vu du modèle estimé sont sauvegardés dans un datafame billets_aberrantes:

Elimination des billets atypiques de notre modèle de la régression linéaire multiple:

## [1] "Nombre des billets atypiques au vu de régression linéaire multiple =  80"

Rappelle de résultats du modéle

## 
## Call:
## lm(formula = margin_low ~ height_left + height_right + margin_up + 
##     length, data = data_norm)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.11349 -0.29434 -0.02935  0.26191  1.40105 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   9.78589    6.34321   1.543    0.123    
## height_left   0.16794    0.03986   4.214 2.68e-05 ***
## height_right  0.23119    0.03847   6.010 2.37e-09 ***
## margin_up     0.25041    0.05810   4.310 1.75e-05 ***
## length       -0.42248    0.01649 -25.624  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4105 on 1378 degrees of freedom
## Multiple R-squared:  0.5414, Adjusted R-squared:  0.5401 
## F-statistic: 406.8 on 4 and 1378 DF,  p-value: < 2.2e-16


La colinéarité des variables

Maintenant on va vérifier la colinéarité des variables à l’aide du facteur d’influence de la variance, noté VIF (Variance Inflation Factor)
Le VIF mesure de combien la variance d’un coefficient de régression estimé augmente, par rapport à une situation dans laquelle les prédicteurs sont strictement indépendants.
Une valeur élevée de VIF est un signe de multi-colinéarité

##  height_left height_right    margin_up       length 
##     1.123308     1.233649     1.425819     1.594634

Ici, tous les coefficients sont inférieurs à 10, il n’y a donc pas de problème de colinéarité.


L’homoscédasticité des résidus

Une hypothèse clé de la régression linéaire est que les résidus sont distribués avec la même variance pour toutes les variables. Cette hypothèse est connue sous le nom d’homoscédasticité.

On teste l’homoscédasticité des résidus afin de vérifier cette constance des variables à l’aide du test de Breusch-Pagan. Les hypothèses du test:

  • L’hypothèse H0: l’homoscédasticité des résidus
  • L’hypothèse H1: l’hétéroscédasticité des résidus

## 
##  studentized Breusch-Pagan test
## 
## data:  regression_multiple
## BP = 51.91, df = 4, p-value = 1.441e-10

La p-valeur est inférieure à 5 % , donc on rejette l’hypothèse H0 selon laquelle les variances sont constantes .

En conséquence la condition de l’homoscédasticité des résidus pour notre régression linéaire n’est pas respectée et on pourrait avoir les prédictions moins efficaces.

Pour résourdre ce problème on va effectuer l’approche économétrique de White avec les estimateurs robustes de variance-covariance.
Dans ce but on utilise le package sandwhich et en la fonction vcovHC

Matrice contenant l’estimation des covariance.

##              (Intercept)   height_left  height_right     margin_up
## (Intercept)  32.96400702 -1.268950e-01 -0.1288731034 -2.866044e-02
## height_left  -0.12689497  1.257288e-03 -0.0001178107 -8.387954e-05
## height_right -0.12887310 -1.178107e-04  0.0012012536 -1.828079e-04
## margin_up    -0.02866044 -8.387954e-05 -0.0001828079  3.240544e-03
## length       -0.05572693  7.667274e-05  0.0001497002  4.099777e-04
##                     length
## (Intercept)  -5.572693e-02
## height_left   7.667274e-05
## height_right  1.497002e-04
## margin_up     4.099777e-04
## length        2.739199e-04

Nous voulons obtenir des erreurs standard robustes d’hétéroskedasticité et leurs valeurs t correspondantes. En R, la fonction coeftest() du paquet lmtest peut être utilisée en combinaison avec la fonction vcovHC() du paquet sandwich pour ce faire.

## 
## t test of coefficients:
## 
##               Estimate Std. Error  t value  Pr(>|t|)    
## (Intercept)   9.785889   5.741429   1.7044   0.08853 .  
## height_left   0.167942   0.035458   4.7363 2.401e-06 ***
## height_right  0.231187   0.034659   6.6703 3.686e-11 ***
## margin_up     0.250413   0.056926   4.3989 1.172e-05 ***
## length       -0.422478   0.016551 -25.5266 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

La normalité des résidus

Il existe plusieurs test de normalité des données parmi lesquelles sont le test de Shapiro-Wilk pour les petits échantillons (< 50 individus) et le test de Kolmogorov-Smirnov pour les grands échatillons.
Dans notre cas il est intéressant d’opter pour le test de Kolmogorov-Smirnov

## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  regression_multiple$residuals
## D = 0.035607, p-value = 0.05998
## alternative hypothesis: two-sided

La probabilité de dépassement est supérieure à p-value = 0.05. Cela indique que l’hypothèse de normalité des données est tolérée.


4. Remplacement de données manquantes

On compte les prévisions pour les données manquantes grâce à la fonction predict() et
notre modèle de la régression linéaire multiple

La série de prévisions - margin_low_prev :

##    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16 
## 4.31 4.36 4.40 4.24 4.62 3.80 4.16 4.09 4.20 4.19 4.21 3.73 4.03 4.28 4.16 4.04 
##   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32 
## 4.43 4.48 4.34 4.11 3.59 4.29 4.07 4.16 3.86 3.73 4.25 4.64 4.12 4.98 4.71 5.03 
##   33   34   35   36   37 
## 5.07 4.77 5.70 5.24 5.12

Cette série sera utilisée pour l’imputation des données manquantes suivante.

On revient sur notre jeu de données et on va remplacer nos données manquantes par les prévisions de la serie margin_low_prev**

Les données initiales
is_genuine diagonal height_left height_right margin_low margin_up length
True 171.81 104.86 104.95 4.52 2.89 112.83
True 171.46 103.36 103.66 3.77 2.99 113.09
True 172.69 104.48 103.5 4.4 2.94 113.16
True 171.36 103.91 103.94 3.62 3.01 113.51
True 171.73 104.28 103.46 4.04 3.48 112.54
True 172.17 103.74 104.08 4.42 2.95 112.81
Remplacement des données manquantes par prévision
is_genuine diagonal height_left height_right margin_low margin_up length
Length:1500 Min. :171.0 Min. :103.1 Min. :102.8 Min. :2.980 Min. :2.270 Min. :109.5
Class :character 1st Qu.:171.8 1st Qu.:103.8 1st Qu.:103.7 1st Qu.:4.020 1st Qu.:2.990 1st Qu.:112.0
Mode :character Median :172.0 Median :104.0 Median :103.9 Median :4.310 Median :3.140 Median :113.0
NA Mean :172.0 Mean :104.0 Mean :103.9 Mean :4.483 Mean :3.151 Mean :112.7
NA 3rd Qu.:172.2 3rd Qu.:104.2 3rd Qu.:104.2 3rd Qu.:4.870 3rd Qu.:3.310 3rd Qu.:113.3
NA Max. :173.0 Max. :104.9 Max. :105.0 Max. :6.900 Max. :3.910 Max. :114.4















Les données complétées et prêtes à l’analyse suivante

Les premières lignes de la table finale
is_genuine diagonal height_left height_right margin_low margin_up length
True 171.81 104.86 104.95 4.52 2.89 112.83
True 171.46 103.36 103.66 3.77 2.99 113.09
True 172.69 104.48 103.50 4.40 2.94 113.16
True 171.36 103.91 103.94 3.62 3.01 113.51
True 171.73 104.28 103.46 4.04 3.48 112.54
True 172.17 103.74 104.08 4.42 2.95 112.81

Résumé

Résumé de l’application de mèthode de régression linéaire multiple

A. Le fichier d’exemple consiste de 1500 individus (billets) et 7 variables (6 colonnes de paramètres géométriques et 1 colonne de la nature du billet)

Les paramètres géométriques :
- Mesure : en mm
- Taux de complétion des variables : 5 paramètres à 100 %, sauf margin_low à 98 %

La nature du billet :
- Variable is_genuine booléenne représentée par 2 valeurs: True (vrai billet)/ False (faux billet)

B. Dans la variable margin_low 37 valeurs manquantes ont étaient imputées par l’application du modèle de la régression linéaire multiple.

L’estimation de ce modèle était réalisé par vérification les conditions suivantes :

  1. Absence de multicollinéarité : en utilisant le facteur VIF on a constaté qu’il n’y a pas de problème de colinéarité
  2. Homoscédasticité des résidus : en utilisant test de Breusch-Pagan on a découvert l’hétéroscédasticité des résidus et et on a fait l’approche économétrique de White pour résoudre cette problème
  3. Normalité des résidus : en utilisant test de Kolmogorov-Smirnov la normalité est confirmée
  4. Absence des observations influentes : 80 billets atypiques au vu de la régression linéaire multiple on été éliminé du modèle

C. Les données manquantes de la variable margin_low ont été remplacé par les prévisions la régression linéaire multiple élaborée.


La table finale complétée et prête à analyse suivante

Les premières lignes de la table finale
is_genuine diagonal height_left height_right margin_low margin_up length
True 171.81 104.86 104.95 4.52 2.89 112.83
True 171.46 103.36 103.66 3.77 2.99 113.09
True 172.69 104.48 103.50 4.40 2.94 113.16
True 171.36 103.91 103.94 3.62 3.01 113.51
True 171.73 104.28 103.46 4.04 3.48 112.54
True 172.17 103.74 104.08 4.42 2.95 112.81




Méthodes alternatives de l’imputation des données manquantes

1. Méthode des kNN (k-nearest neighbors )

Pour des variables continues, il peut être assez facile de faire de l’interpolation. L’interpolation consiste à compléter une valeur en regardant la valeur précédente, la valeur suivante ou les deux en même temps.
Les méthodes d’interpolation sont nombreuses.
Ici, on va appliquer Interpolation grâce à la méthode des kNN

l’idée de la méthode des kNN est de calculer les distances entre observations, et d’attribuer aux valeurs manquante la moyenne des valeurs observées chez les k plus proches voisins.
Pour effectuer cette méthode on va utiliser la fonction kNN() du package VIM.

Description de resultat d’application de kNN
is_genuine diagonal height_left height_right margin_low margin_up length is_genuine_imp diagonal_imp height_left_imp height_right_imp margin_low_imp margin_up_imp length_imp
Length:1500 Min. :171.0 Min. :103.1 Min. :102.8 Min. :2.980 Min. :2.270 Min. :109.5 Mode :logical Mode :logical Mode :logical Mode :logical Mode :logical Mode :logical Mode :logical
Class :character 1st Qu.:171.8 1st Qu.:103.8 1st Qu.:103.7 1st Qu.:4.020 1st Qu.:2.990 1st Qu.:112.0 FALSE:1500 FALSE:1500 FALSE:1500 FALSE:1500 FALSE:1463 FALSE:1500 FALSE:1500
Mode :character Median :172.0 Median :104.0 Median :103.9 Median :4.310 Median :3.140 Median :113.0 NA NA NA NA TRUE :37 NA NA
NA Mean :172.0 Mean :104.0 Mean :103.9 Mean :4.484 Mean :3.151 Mean :112.7 NA NA NA NA NA NA NA
NA 3rd Qu.:172.2 3rd Qu.:104.2 3rd Qu.:104.2 3rd Qu.:4.870 3rd Qu.:3.310 3rd Qu.:113.3 NA NA NA NA NA NA NA
NA Max. :173.0 Max. :104.9 Max. :105.0 Max. :6.900 Max. :3.910 Max. :114.4 NA NA NA NA NA NA NA

Résultats de l’aplication de la mèthode
Les premières lignes de la table finale de kNN
is_genuine diagonal height_left height_right margin_low margin_up length
True 171.81 104.86 104.95 4.52 2.89 112.83
True 171.46 103.36 103.66 3.77 2.99 113.09
True 172.69 104.48 103.50 4.40 2.94 113.16
True 171.36 103.91 103.94 3.62 3.01 113.51
True 171.73 104.28 103.46 4.04 3.48 112.54
True 172.17 103.74 104.08 4.42 2.95 112.81



2. Méthode des forêts aléatoires

Une forêt aléatoire est un algorithme de machine learning supervisé en appliquante une formule permettant d’utiliser des données aléatoires pour créer des prédictions.
Il gère à la fois les problèmes de classification et de régression.Sa souplesse d’utilisation et sa flexibilité ont favorisé son adoption, car il gère à la fois les problèmes de classification et de régression.

Cet algorithme est appelé « forêt » parce qu’il génère la croissance d’une forêt d’arbres de décision. Les données de ces arbres sont ensuite fusionnées pour garantir les prédictions les plus précises. Alors qu’un arbre de décision isolé a un seul résultat et une gamme étroite de groupes, la forêt assure un résultat plus précis en comptant sur un plus grand nombre de groupes et de décisions. Elle présente l’avantage supplémentaire d’ajouter un caractère aléatoire au modèle en trouvant la meilleure caractéristique parmi un sous-ensemble aléatoire de caractéristiques. Dans l’ensemble, ces avantages créent un modèle qui présente une grande diversité que de nombreux data scientists favorisent.
Source: https://www.tibco.com/fr/reference-center/what-is-a-random-forest

On va utiliser le package missForest
Les premières lignes de la table de données imputées
diagonal height_left height_right margin_low margin_up length
171.81 104.86 104.95 4.52 2.89 112.83
171.46 103.36 103.66 3.77 2.99 113.09
172.69 104.48 103.50 4.40 2.94 113.16
171.36 103.91 103.94 3.62 3.01 113.51
171.73 104.28 103.46 4.04 3.48 112.54
172.17 103.74 104.08 4.42 2.95 112.81
Remplacement des données manquantes par prévision
is_genuine diagonal height_left height_right margin_low margin_up length
Length:1500 Min. :171.0 Min. :103.1 Min. :102.8 Min. :2.980 Min. :2.270 Min. :109.5
Class :character 1st Qu.:171.8 1st Qu.:103.8 1st Qu.:103.7 1st Qu.:4.020 1st Qu.:2.990 1st Qu.:112.0
Mode :character Median :172.0 Median :104.0 Median :103.9 Median :4.310 Median :3.140 Median :113.0
NA Mean :172.0 Mean :104.0 Mean :103.9 Mean :4.484 Mean :3.151 Mean :112.7
NA 3rd Qu.:172.2 3rd Qu.:104.2 3rd Qu.:104.2 3rd Qu.:4.870 3rd Qu.:3.310 3rd Qu.:113.3
NA Max. :173.0 Max. :104.9 Max. :105.0 Max. :6.900 Max. :3.910 Max. :114.4

Comparaison de variable margin_low imputée par différentes méthodes




Analyse descriptive des données

Une analyse descriptive des données sert à définir certaines caractéristiques des paramètres de billets, mesurer les tendances et comparer les différents groupes. En même temps on peut voir la distribution des billets et corrélation des paramètres

Dans cette partie on présent notamment la répartition des dimensions des billets, le nombre de vrais / faux billets, etc.

Les descriptions présentées:

• Statistiques des dimensions géometriques
• Répartition des dimensions des vrais et faux billets
• Proportion des faux et vrais billets
• Corrélation des variables des billets


Les statistiques des dimensions géométriques

Nous avons 6 dimensions géométriques :

length : la longueur du billet (en mm) ;
height_left : la hauteur du billet (mesurée sur le côté gauche, en mm) ;
height_right : la hauteur du billet (mesurée sur le côté droit, en mm) ;
margin_up : la marge entre le bord supérieur du billet et l’image de celui-ci (en mm) ;
margin_low : la marge entre le bord inférieur du billet et l’image de celui-ci (en mm) ;
diagonal : la diagonale du billet (en mm).

En plus, un paramètre déterminant :

is_genuine : la nature du billet (True/False)`.


Les statistiques des dimensions géometriques
is_genuine diagonal height_left height_right margin_low margin_up length
Min. :0.0000 Min. :171.0 Min. :103.1 Min. :102.8 Min. :2.980 Min. :2.270 Min. :109.5
1st Qu.:0.0000 1st Qu.:171.8 1st Qu.:103.8 1st Qu.:103.7 1st Qu.:4.020 1st Qu.:2.990 1st Qu.:112.0
Median :1.0000 Median :172.0 Median :104.0 Median :103.9 Median :4.310 Median :3.140 Median :113.0
Mean :0.6667 Mean :172.0 Mean :104.0 Mean :103.9 Mean :4.483 Mean :3.151 Mean :112.7
3rd Qu.:1.0000 3rd Qu.:172.2 3rd Qu.:104.2 3rd Qu.:104.2 3rd Qu.:4.870 3rd Qu.:3.310 3rd Qu.:113.3
Max. :1.0000 Max. :173.0 Max. :104.9 Max. :105.0 Max. :6.900 Max. :3.910 Max. :114.4




ACP : Analyse en composantes principales

Analyse en composantes principale (ACP) nous sert à synthétiser l’information et interpréter la quantité important de données quantitatives .

Les deux objectifs principaux de l’ACP dans cette partie :

  • étudier la variabilité des billets
  • étudier le lien entre les paramètres géometriques
  • Résumé


On va créer des dimensions synthétiques calculées (les composantes principales) à partir des dimensions initiales (paramètres géometriques) en perdant le moins d’information possible.
Pour ce faire, il est important de ramener les données dans des échelles de grandeur similaires: centrer-réduire nos données.

Proportion de variences expliqué par les composantes principales

Variance cumulée pour les dimensions de composantes principales

Ici on voit les axes principaux d’inertie du nuage des variables (les composantes principales) et leurs proportions de variance.
On voit que la PC1 est le plus représentative avec 73 % de la variance expliquée.

## Importance of components:
##                           Comp.1     Comp.2     Comp.3     Comp.4     Comp.5
## Standard deviation     0.9642543 0.34912315 0.31617096 0.28335903 0.21859358
## Proportion of Variance 0.7265585 0.09524556 0.07811446 0.06274247 0.03733897
## Cumulative Proportion  0.7265585 0.82180411 0.89991857 0.96266103 1.00000000
##                              Comp.6
## Standard deviation     9.101744e-09
## Proportion of Variance 6.473464e-17
## Cumulative Proportion  1.000000e+00

Correlation des dimensions avec les composantes principales

Sur les visualisations suivants on découvre le niveau d’influence des paramètres géométriques sur chaque composante principale.

Table de coefficients de correlation des variables avec les composantes principales
PC1 PC2 PC3 PC4 PC5 PC6
length 0.57 -0.27 -0.03 0.03 0.08 0.77
diagonal 0.19 0.96 0.06 0.08 0.04 0.18
height_left -0.27 0.06 -0.92 0.09 0.21 0.17
height_right -0.35 -0.07 0.30 0.79 0.36 0.19
margin_up -0.42 0.04 0.25 -0.60 0.56 0.30
margin_low -0.51 0.04 0.08 -0.04 -0.71 0.47

Presentation de variance des variables sur le premier plan factoriel : (PC1, PC2)

Projection de vrais et faux billets sur la dimension (PC1,PC2)

Les premières lignes des projections de billets sur les composantes principales
Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6
-1.6433581 -0.7448467 2.4076014 -3.1773554 0.2907772 0.0073915
2.0195715 2.2061493 -1.0024614 -0.0744211 0.0303291 0.4728205
0.9680399 -2.6210023 1.1936177 0.9284338 -0.8318457 -0.2038883
1.3775004 1.8191542 0.6520614 -0.8293368 0.7924940 0.2269698
-0.1491568 0.5688384 0.8517457 1.7839646 1.1819414 0.3030584
0.6951035 -0.4281526 -0.8668459 -0.8222852 -0.5828600 0.0960691



Projection de vrais et faux billets sur la dimension de 2 premières composantes principales (PC1 = Dim.1, PC2 = Dim.2) présente 82,5 % de variations des paramètres géométriques.Donc la projection sur le premier plan factoriel est assez représentative
La notion de cluster pour les projections des billets sur les PCs
Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 is_genuine
-1.6433581 -0.7448467 2.4076014 -3.1773554 0.2907772 0.0073915 1
2.0195715 2.2061493 -1.0024614 -0.0744211 0.0303291 0.4728205 1
0.9680399 -2.6210023 1.1936177 0.9284338 -0.8318457 -0.2038883 1
1.3775004 1.8191542 0.6520614 -0.8293368 0.7924940 0.2269698 1
-0.1491568 0.5688384 0.8517457 1.7839646 1.1819414 0.3030584 1
0.6951035 -0.4281526 -0.8668459 -0.8222852 -0.5828600 0.0960691 1


Résumé

  • Les 6 paramètres géométriques ont été synthétisés et peuvent être présentés par 2 premières composantes principales PC1 et PC 2 en gardant 82,5 % de variation des paramètres géométriques.

  • La PC1 est corrélée avec le paramètre “length” (présente 57 % de la variation) et anti-corrélée avec les paramètres “margin_up” (-51 %) et “margin_low” (- 42 %)

  • La PC2 est* corrélée avec le paramètre “diagonal” (présente 96 % de la variation)

  • Sur le premier plan factoriel (PC1, PC2) les projection des vrais billets et des faux billets sont regroupés

  • Les vrais billets sont avancés sur la PC1 par rapport aux faux billets.
    Ainsi, les faux billets ont :

                      -    le paramètre "length" réduit; 
                      -    le paramètre "margin_up" élevé;
                      -    le paramètre "margin_low" élevé


par rapport aux vrais billets.

Méthode de prédiction : Régression logistique

Dans cette partie on va appliquer la méthode de la régression logistique classique afin d’identifier un maximum de faux billets au sein de la masse de billets analysés.

Cette méthode est divisée en plusieurs étapes :

• Détermination de jeu de données pour entraîner le modèle
• Construction du modèle
• Application de la prévision
• Comparaison du résultat de prévision avec la nature initiale de billets
• Proportionnalité des erreurs et visualisation des billets mal identifiés


Déterminaison des jeux de données pour entraîner le modèle

Pour entraîner le modèle on va utiliser la radome sélection de 75% du jeu de données fourni.
data_train_commun - Dataframe dont on va utiliser pour modélisation

Les premières lignes du data_train_commun

Le jeu de données ‘data_train_commun’
is_genuine diagonal height_left height_right margin_low margin_up length
415 1 172.30 104.12 103.89 3.55 2.93 113.68
463 1 171.48 103.95 103.93 4.52 2.91 113.21
179 1 171.79 104.57 104.04 4.26 3.15 113.46
526 1 171.97 103.61 103.60 4.89 3.17 112.96
195 1 171.94 104.34 103.99 4.27 2.87 113.14
938 1 171.64 103.60 103.76 4.42 2.98 112.94
La description des variables du data_train_commun
is_genuine diagonal height_left height_right margin_low margin_up length
Min. :0.0000 Min. :171.0 Min. :103.1 Min. :102.8 Min. :2.980 Min. :2.270 Min. :109.5
1st Qu.:0.0000 1st Qu.:171.8 1st Qu.:103.8 1st Qu.:103.7 1st Qu.:4.030 1st Qu.:2.990 1st Qu.:112.0
Median :1.0000 Median :172.0 Median :104.0 Median :103.9 Median :4.310 Median :3.140 Median :113.0
Mean :0.6622 Mean :172.0 Mean :104.0 Mean :103.9 Mean :4.495 Mean :3.157 Mean :112.7
3rd Qu.:1.0000 3rd Qu.:172.2 3rd Qu.:104.2 3rd Qu.:104.2 3rd Qu.:4.880 3rd Qu.:3.310 3rd Qu.:113.3
Max. :1.0000 Max. :173.0 Max. :104.9 Max. :105.0 Max. :6.900 Max. :3.910 Max. :114.2




Construction du modèle

Modèle de la regression logistique

## 
## Call:
## glm(formula = is_genuine ~ diagonal + height_left + height_right + 
##     margin_low + margin_up + length, family = "binomial", data = data_train)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -3.9891  -0.0018   0.0043   0.0232   2.2726  
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -195.9482   289.8268  -0.676   0.4990    
## diagonal        0.7549     1.2797   0.590   0.5552    
## height_left    -1.8227     1.4189  -1.285   0.1989    
## height_right   -2.8480     1.3618  -2.091   0.0365 *  
## margin_low     -6.2026     1.1482  -5.402 6.59e-08 ***
## margin_up      -9.6934     2.3729  -4.085 4.41e-05 ***
## length          5.4387     0.8486   6.409 1.46e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1438.989  on 1124  degrees of freedom
## Residual deviance:   58.985  on 1118  degrees of freedom
## AIC: 72.985
## 
## Number of Fisher Scoring iterations: 10

Certaines des variables obtenues ont des p-valeurs qui sont inférieures au niveau de test de 5 %, ce qui nous indique qu’elles sont bien significatives. Certaines autres ne sont pas en dessous de ce seuil.

On peut donc passer sur une procédure de sélection en retirant les variables non significatives


Sélection automatique du modèle : Le critère AIC nous a permis de réduire nombre de paramètres de 6 à 4.

## Start:  AIC=72.98
## is_genuine ~ diagonal + height_left + height_right + margin_low + 
##     margin_up + length
## 
##                Df Deviance     AIC
## - diagonal      1   59.339  71.339
## - height_left   1   60.685  72.685
## <none>              58.985  72.985
## - height_right  1   64.519  76.519
## - margin_up     1   85.084  97.084
## - margin_low    1  158.667 170.667
## - length        1  223.971 235.971
## 
## Step:  AIC=71.34
## is_genuine ~ height_left + height_right + margin_low + margin_up + 
##     length
## 
##                Df Deviance     AIC
## - height_left   1   61.007  71.007
## <none>              59.339  71.339
## - height_right  1   65.574  75.574
## - margin_up     1   85.817  95.817
## - margin_low    1  163.860 173.860
## - length        1  225.604 235.604
## 
## Step:  AIC=71.01
## is_genuine ~ height_right + margin_low + margin_up + length
## 
##                Df Deviance     AIC
## <none>              61.007  71.007
## - height_right  1   70.665  78.665
## - margin_up     1   89.018  97.018
## - margin_low    1  175.650 183.650
## - length        1  242.892 250.892
## 
## Call:  glm(formula = is_genuine ~ height_right + margin_low + margin_up + 
##     length, family = "binomial", data = data_train)
## 
## Coefficients:
##  (Intercept)  height_right    margin_low     margin_up        length  
##     -183.293        -3.649        -6.543        -9.928         5.554  
## 
## Degrees of Freedom: 1124 Total (i.e. Null);  1120 Residual
## Null Deviance:       1439 
## Residual Deviance: 61.01     AIC: 71.01

Modèle modifié d’après l’application du critère d’Akaike en utilisant le package CARET.

## 
## Call:
## NULL
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -4.0140  -0.0014   0.0038   0.0232   2.2960  
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -183.2928   162.9988  -1.125  0.26080    
## height_right   -3.6486     1.3752  -2.653  0.00798 ** 
## margin_low     -6.5427     1.1351  -5.764 8.22e-09 ***
## margin_up      -9.9279     2.3629  -4.202 2.65e-05 ***
## length          5.5541     0.8508   6.528 6.65e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1438.989  on 1124  degrees of freedom
## Residual deviance:   61.007  on 1120  degrees of freedom
## AIC: 71.007
## 
## Number of Fisher Scoring iterations: 10

Application de la prévision

On applique notre modèle au jeu d’entrainement afin d’avoir une prevision de la nature des billets: 1 = Vrai , 0 = Faux
Maintenant notre dataframe a une colonne (“prediction”) en plus.
Prévision sur les premières lignes de la table ‘data_train’
is_genuine diagonal height_left height_right margin_low margin_up length prediction
415 1 172.30 104.12 103.89 3.55 2.93 113.68 1
463 1 171.48 103.95 103.93 4.52 2.91 113.21 1
179 1 171.79 104.57 104.04 4.26 3.15 113.46 1
526 1 171.97 103.61 103.60 4.89 3.17 112.96 1
195 1 171.94 104.34 103.99 4.27 2.87 113.14 1
938 1 171.64 103.60 103.76 4.42 2.98 112.94 1

Comparaison du résultat de prévision avec la nature initiale de billets

On crée un tableau croisé des classes observées et prédites avec les statistiques associées:

  • prediction sur observation
  • Accuracy : 0.9929 : proportion du bon résultat de la prévision
  • P-Value [Acc > NIR] : <2e-16 => moins 5%
## Confusion Matrix and Statistics
## 
##              
## prediction_lr   0   1
##             0 375   3
##             1   5 742
##                                          
##                Accuracy : 0.9929         
##                  95% CI : (0.986, 0.9969)
##     No Information Rate : 0.6622         
##     P-Value [Acc > NIR] : <2e-16         
##                                          
##                   Kappa : 0.9841         
##                                          
##  Mcnemar's Test P-Value : 0.7237         
##                                          
##             Sensitivity : 0.9868         
##             Specificity : 0.9960         
##          Pos Pred Value : 0.9921         
##          Neg Pred Value : 0.9933         
##              Prevalence : 0.3378         
##          Detection Rate : 0.3333         
##    Detection Prevalence : 0.3360         
##       Balanced Accuracy : 0.9914         
##                                          
##        'Positive' Class : 0              
## 

Proportionnalité des erreurs et visualisation des billets mal identifiés

La table des erreurs de la prévision
is_genuine diagonal height_left height_right margin_low margin_up length prediction vf
1191 0 171.45 104.21 104.18 4.550000 3.52 113.21 1 faux dont identifié comme vrais
1384 0 171.75 104.16 104.16 4.230000 2.99 111.83 1 faux dont identifié comme vrais
1408 0 172.02 103.99 104.28 4.220000 2.98 112.42 1 faux dont identifié comme vrais
1074 0 172.13 103.67 103.82 4.270000 3.22 112.15 1 faux dont identifié comme vrais
1123 0 172.09 104.15 104.17 4.150000 3.40 113.85 1 faux dont identifié comme vrais
947 1 171.63 103.87 104.66 4.640029 3.27 112.68 0 vrais dont identifié comme faux
592 1 171.67 103.81 103.76 4.590000 3.30 112.18 0 vrais dont identifié comme faux
729 1 171.94 104.11 104.16 4.080000 3.35 111.76 0 vrais dont identifié comme faux
Var1 Freq
prévision correspond 0.993
prévision ne correspond pas 0.007
Matrix de confusion
Faux_billets_par_prediction Vrais_billets_par_prediction
Faux_billets 375 5
Vrais_billets 3 742

Proportion de la reussité et d’erreur:

  • 99,3 % de billets ont été bien identifiés par la prévision
  • 0,7 % de billets ont été mal identifiés par la prévision
Le rapport de la identification des billets en proportion
Var1 Freq
vrais dont identifié comme faux 0.003
faux dont identifié comme vrais 0.004
juste 0.993


Tableau des billets mal identifiés
diagonal height_left height_right margin_low margin_up length vf
1191 171.45 104.21 104.18 4.550000 3.52 113.21 faux dont identifié comme vrais
1384 171.75 104.16 104.16 4.230000 2.99 111.83 faux dont identifié comme vrais
1408 172.02 103.99 104.28 4.220000 2.98 112.42 faux dont identifié comme vrais
1074 172.13 103.67 103.82 4.270000 3.22 112.15 faux dont identifié comme vrais
1123 172.09 104.15 104.17 4.150000 3.40 113.85 faux dont identifié comme vrais
947 171.63 103.87 104.66 4.640029 3.27 112.68 vrais dont identifié comme faux
592 171.67 103.81 103.76 4.590000 3.30 112.18 vrais dont identifié comme faux
729 171.94 104.11 104.16 4.080000 3.35 111.76 vrais dont identifié comme faux



Résumé

1. L’entraînement d’un modèle revient à mesurer l’erreur de la sortie de l’algorithme avec les données d’exemple et chercher à la minimiser.
Pour cela on a divisé notre jeu de données en deux parties distinctes :

  • le training set(deta_train_commun) : 75 % de billets choisi aléatoirement : 1125 billets
  • le testing set (data_test) : 25% de billets choisi aléatoirement : 375 billets

2.Le modèle de la régression logistique a été construit et puis modifié d’après l’application du critère d’Akaike

3. Les predictions de la nature du billet par rapport à ces paramètres géométriques on été inscrit dans la colonne prediction de data_train:

  • 1 signifie Vrai billet
  • 0 signifie Faux billet

4. Comparaison du résultat de prévision avec la nature initiale de billets était effectué par la matrcie de confusion.
Dans les résultats on a obtenu ** 8 ** billets mal idéntifiés parmi 1125 billets étudiés.

Proportion de la reussité et d’erreur:

  • 99,3 % de billets ont été bien identifiés par la prévision
  • 0,7 % de billets ont été mal identifiés par la prévision

4. L’efficacité de mèthode : 99,3 %

Méthode de prédiction : K-means

Dans cette partie on va appliquer la méthode du k-means aux 75 % de jeu de données fourni afin d’identifier un maximum de faux billets au sein de la masse de billets analysés.

Cette méthode est divisée en plusieurs étapes :

• Détermination de jeu de données pour entraîner la méthode
• Définition de clusters k-means
• Exploration du nombre optimal de clusters
• ACP
• Projections des clusters et des centroïdes
• Comparaison du résultat de prévision avec la nature initiale de billets
• Proportionnalité des erreurs et visualisation des billets mal identifiés

Détermination des jeux de données


Pour entraîner le modèle on va utiliser la radome sélection de 75% du jeu de données fourni.

data_train_commun - Dataframe dont on va utiliser pour modélisation
data_train_commun
diagonal height_left height_right margin_low margin_up length
415 172.30 104.12 103.89 3.55 2.93 113.68
463 171.48 103.95 103.93 4.52 2.91 113.21
179 171.79 104.57 104.04 4.26 3.15 113.46
526 171.97 103.61 103.60 4.89 3.17 112.96
195 171.94 104.34 103.99 4.27 2.87 113.14
938 171.64 103.60 103.76 4.42 2.98 112.94
Desacription de data_train_commun
diagonal height_left height_right margin_low margin_up length
Min. :171.0 Min. :103.1 Min. :102.8 Min. :2.980 Min. :2.270 Min. :109.5
1st Qu.:171.8 1st Qu.:103.8 1st Qu.:103.7 1st Qu.:4.030 1st Qu.:2.990 1st Qu.:112.0
Median :172.0 Median :104.0 Median :103.9 Median :4.310 Median :3.140 Median :113.0
Mean :172.0 Mean :104.0 Mean :103.9 Mean :4.495 Mean :3.157 Mean :112.7
3rd Qu.:172.2 3rd Qu.:104.2 3rd Qu.:104.2 3rd Qu.:4.880 3rd Qu.:3.310 3rd Qu.:113.3
Max. :173.0 Max. :104.9 Max. :105.0 Max. :6.900 Max. :3.910 Max. :114.2













>Définition de clusters k-means

Ici on obtient :

  • cluster 1 = les billets déterminés faux ; cluster 2 = les billets déterminés vrais
  • Les coordonnées de centers des clusters
  • La taille des clusters
  • Nombre d’iteractions
  • Examples des clusters
  • La somme des carrés entre les clusters. Dans une segmentation optimale, on s’attend à ce que ce ratio soit le plus élevé possible, car nous aimerions avoir des clusters hétérogènes.
##   diagonal height_left height_right margin_low margin_up   length
## 1 171.8878    104.1887     104.1388   5.242989  3.348113 111.6029
## 2 171.9914    103.9443     103.8138   4.126276  3.062347 113.1929
## [1] 371 754
## [1] 1
##  415  463  179  526  195  938 1142 1323 1253 1268 1038 1398  665  602  709 1011 
##    2    2    2    2    2    2    1    1    1    1    1    1    2    2    2    1 
## 1115  953  348 1017 
##    1    2    2    1
## [1] 1002.848

Visualisation de clustering sur les dimensions geomethriques de billets

Exploration du nombre optimal de clusters

Definition du nombre de clusters k-means

Sur les graphiques suivants on peut voir l’évolution des sommes des carrés entre les clusters et l’évolution des sommes des carrés à l’intérieur des clusters

## Warning: `qplot()` was deprecated in ggplot2 3.4.0.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Exploration du nombre de clusters par silouhette-score

Analyse en Composantes Principales des clusters

PCA et projection des billets sur les composantes principales

Les projections de billets sur les composantes principales
Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6
415 -1.8004547 -1.2786124 0.7502174 -0.3557233 0.3226961 0.1737679
463 -0.6875483 1.5264356 0.8002230 -0.5724969 -0.4548363 -0.3123934
179 0.1650701 -0.1644548 1.9897855 0.1037238 0.7133121 -0.4778464
526 -0.7178149 0.5278955 -1.3105176 0.4522166 -0.5350669 -0.6189875
195 -0.5463763 -0.3476627 1.5477735 -0.4040538 -0.4154547 0.0056588
938 -1.1297472 1.4672789 -0.5427919 -0.3236278 -0.5066196 -0.0238927

Proportion de variences expliqué par les composantes principales

Table de coefficients de correlation des variables avec les composantes principales
PC1 PC2 PC3 PC4 PC5 PC6
length 0.57 -0.28 -0.06 0.00 0.07 0.77
diagonal 0.21 0.94 0.10 0.14 0.07 0.18
height_left -0.29 0.11 -0.92 0.07 0.18 0.16
height_right -0.35 -0.13 0.26 0.79 0.36 0.19
margin_up -0.42 0.06 0.25 -0.59 0.57 0.30
margin_low -0.50 0.06 0.11 -0.04 -0.71 0.47

Projections des clusters et des centroïdes

La notion de cluster pour les projections des billets sur les PCs
Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 cluster is_genuine
415 -1.8004547 -1.2786124 0.7502174 -0.3557233 0.3226961 0.1737679 2 1
463 -0.6875483 1.5264356 0.8002230 -0.5724969 -0.4548363 -0.3123934 2 1
179 0.1650701 -0.1644548 1.9897855 0.1037238 0.7133121 -0.4778464 2 1
526 -0.7178149 0.5278955 -1.3105176 0.4522166 -0.5350669 -0.6189875 2 1
195 -0.5463763 -0.3476627 1.5477735 -0.4040538 -0.4154547 0.0056588 2 1
938 -1.1297472 1.4672789 -0.5427919 -0.3236278 -0.5066196 -0.0238927 2 1
## [1] 745
## [1] 754

Projection des k-means centers sur les composantes principales

Les coordonnées de centers des clusters
diagonal height_left height_right margin_low margin_up length
171.8878 104.1887 104.1388 5.242989 3.348113 111.6029
171.9914 103.9443 103.8138 4.126276 3.062348 113.1929
Les projections de centers des clusters
Dim.1 Dim.2
-1.732051 0
1.732051 0

Comparaison du résultat de prévision avec la nature initiale de billets

Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 cluster is_genuine vf
1088 1.1119023 -0.0481014 0.2734957 0.7609797 0.0176569 -1.4892895 1 0 faux identifié dans le cluster des vrais
1326 1.2716279 -0.0432924 0.9303253 -0.0836425 0.3434303 -1.9436385 1 0 faux identifié dans le cluster des vrais
1246 1.0348515 -1.1390216 -0.6365328 -0.7804959 1.6071201 1.0120936 1 0 faux identifié dans le cluster des vrais
1079 1.6710329 -1.2502383 0.3553757 -0.1479398 0.5577415 -1.2305956 1 0 faux identifié dans le cluster des vrais
1191 1.1049806 1.2598966 0.6428219 0.0093046 1.6858429 -0.8061915 1 0 faux identifié dans le cluster des vrais
1224 1.9264917 -1.4310169 -0.0118670 -0.9286359 2.1178116 0.1733675 1 0 faux identifié dans le cluster des vrais
1082 0.3611237 0.6757419 -0.7363083 0.9177124 0.1201520 -0.2114595 1 0 faux identifié dans le cluster des vrais
1342 1.1327142 -0.2000742 0.0285300 0.2553678 1.1914885 0.3423258 1 0 faux identifié dans le cluster des vrais
1408 -0.0324167 -0.2840833 0.2281176 -1.2640366 -0.1456231 0.5959501 1 0 faux identifié dans le cluster des vrais
1074 -0.3272689 -0.1137651 -1.3700795 0.0723047 -0.0041917 0.6251687 1 0 faux identifié dans le cluster des vrais
1123 -0.1168870 -0.7138730 0.2670445 -0.3036498 1.6434023 -0.8968741 1 0 faux identifié dans le cluster des vrais
592 0.3009375 1.2015478 -0.7260118 0.5061175 0.1162603 0.2375959 0 1 vrai identifié dans le cluster des faux
729 0.9917093 -0.1056761 -0.1078622 -0.1537353 0.8489924 1.0291520 0 1 vrai identifié dans le cluster des faux
## [1] 1 0
Proportion de la reussité et d’erreur:
Var1 Freq
correspond 0.988
ne correspond pas 0.012


Proportion de la reussité et d’erreur:

  • 98,8 % de billets ont été bien identifiés par la prévision
  • 1,2 % de billets ont été mal identifiés par la prévision


Proportionnalité des erreurs et visualisation des billets mal identifiés

Matrix de confusion
Faux billets Vrais billets
0 369 11
1 2 743
Le rapport de l’identification des billets en proportion
Var1 Freq
faux identifié dans le cluster des vrais 0.010
juste 0.988
vrai identifié dans le cluster des faux 0.002


Tableau des billets mal identifiés
diagonal height_left height_right margin_low margin_up length cluster is_genuine
1088 171.91 104.28 103.86 5.48 3.37 113.13 1 0
1326 171.83 104.39 104.17 5.51 3.33 113.64 1 0
1246 172.26 104.04 104.43 3.82 3.47 111.95 1 0
1079 172.21 104.40 104.28 5.28 3.42 112.99 1 0
592 171.67 103.81 103.76 4.59 3.30 112.18 0 1
729 171.94 104.11 104.16 4.08 3.35 111.76 0 1
1191 171.45 104.21 104.18 4.55 3.52 113.21 1 0
1224 172.24 104.31 104.66 4.20 3.61 112.37 1 0
1082 171.82 103.90 103.67 4.79 3.36 112.43 1 0
1342 171.94 104.21 104.10 4.28 3.47 112.23 1 0
1408 172.02 103.99 104.28 4.22 2.98 112.42 1 0
1074 172.13 103.67 103.82 4.27 3.22 112.15 1 0
1123 172.09 104.15 104.17 4.15 3.40 113.85 1 0



Résumé

1. L’entraînement d’un modèle revient à mesurer l’erreur de la sortie de l’algorithme avec les données d’exemple et chercher à la minimiser.
Pour cela on a divisé notre jeu de données en deux parties distinctes :

  • le training set(deta_train_commun) : 75 % de billets choisi aléatoirement : 1125 billets
  • le testing set (data_test) : 25% de billets choisi aléatoirement : 375 billets

2. On a définie les clusters des billets et on on a appliqué l’ACP aux clusters

3. Le cluster corréspondant à la nature du billet par rapport à ces paramètres géométriques a été inscrit dans la colonne cluster de data_train:

  • 1 signifie Vrai billet
  • 0 signifie Faux billet

4. Comparaison du résultat de prévision avec la nature initiale de billets était effectué par la matrcie de confusion.
Dans les résultats on a obtenu ** 13 ** billets mal idéntifiés parmi 1125 billets étudiés.

Proportion de la reussité et d’erreur:

  • 98,8 % de billets ont été bien identifiés par la prévision
  • 1,2 % de billets ont été mal identifiés par la prévision

4. L’efficacité de mèthode : 98,8 %



Comparaison des methodes

On va comparer les résultats d’identification de 2 méthodes:

  • D’abord on affiche les billets mal identifiés par chaque méthode.
  • Puis on verra est-ce qu’il y a des mêmes billets mal-identifiés par toutes les deux méthodes.
  • A la fin, on compare l’efficacité des méthodes.

Table des erreurs de mèthode de la régression logistique

Tableau des billets mal identifiés
is_genuine diagonal height_left height_right margin_low margin_up length prediction vf conformité
1191 0 171.45 104.21 104.18 4.550000 3.52 113.21 1 faux dont identifié comme vrais prévision ne correspond pas
1384 0 171.75 104.16 104.16 4.230000 2.99 111.83 1 faux dont identifié comme vrais prévision ne correspond pas
1408 0 172.02 103.99 104.28 4.220000 2.98 112.42 1 faux dont identifié comme vrais prévision ne correspond pas
1074 0 172.13 103.67 103.82 4.270000 3.22 112.15 1 faux dont identifié comme vrais prévision ne correspond pas
1123 0 172.09 104.15 104.17 4.150000 3.40 113.85 1 faux dont identifié comme vrais prévision ne correspond pas
947 1 171.63 103.87 104.66 4.640029 3.27 112.68 0 vrais dont identifié comme faux prévision ne correspond pas
592 1 171.67 103.81 103.76 4.590000 3.30 112.18 0 vrais dont identifié comme faux prévision ne correspond pas
729 1 171.94 104.11 104.16 4.080000 3.35 111.76 0 vrais dont identifié comme faux prévision ne correspond pas

Table des erreurs de mèthode k-means

Tableau des billets mal identifiés
is_genuine diagonal height_left height_right margin_low margin_up length cluster
1088 0 171.91 104.28 103.86 5.48 3.37 113.13 1
1326 0 171.83 104.39 104.17 5.51 3.33 113.64 1
1246 0 172.26 104.04 104.43 3.82 3.47 111.95 1
1079 0 172.21 104.40 104.28 5.28 3.42 112.99 1
592 1 171.67 103.81 103.76 4.59 3.30 112.18 0
729 1 171.94 104.11 104.16 4.08 3.35 111.76 0
1191 0 171.45 104.21 104.18 4.55 3.52 113.21 1
1224 0 172.24 104.31 104.66 4.20 3.61 112.37 1
1082 0 171.82 103.90 103.67 4.79 3.36 112.43 1
1342 0 171.94 104.21 104.10 4.28 3.47 112.23 1
1408 0 172.02 103.99 104.28 4.22 2.98 112.42 1
1074 0 172.13 103.67 103.82 4.27 3.22 112.15 1
1123 0 172.09 104.15 104.17 4.15 3.40 113.85 1

Les billets mal identifiés dans toutes les deux mèthodes

~0,03 % de billets sont mal identifiés par application de deux méthodes ensemble.
Ainsi, on peut constater que les paramètres géométriques de cette classe de billets ne sont pas suffisants pour déterminer la nature de ces billets.

Tableau des billets mal déterminés par les deux méthodes
row_names diagonal height_left height_right margin_low margin_up length
1074 172.13 103.67 103.82 4.27 3.22 112.15
1123 172.09 104.15 104.17 4.15 3.40 113.85
1191 171.45 104.21 104.18 4.55 3.52 113.21
1408 172.02 103.99 104.28 4.22 2.98 112.42
592 171.67 103.81 103.76 4.59 3.30 112.18
729 171.94 104.11 104.16 4.08 3.35 111.76

Proportion de la reussité et d’erreur de la méthode de la régression logistique:

  • 99,3 % de billets ont été bien identifiés par la prévision
  • 0,7 % de billets ont été mal identifiés par la prévision
Le rapport de l’identification des billets en proportion
Var1 Freq
vrais dont identifié comme faux 0.003
faux dont identifié comme vrais 0.004
juste 0.993

Proportion de la reussité et d’erreur de la méthode k-means:

  • 98,8 % de billets ont été bien identifiés par la prévision
  • 1,2 % de billets ont été mal identifiés par la prévision
Le rapport de l’a détermination’identification des billets en proportion
Var1 Freq
faux identifié dans le cluster des vrais 0.010
juste 0.988
vrai identifié dans le cluster des faux 0.002


Conclusion




1. L’efficacité de la méthode de régression logistique est supérieure à celle de la méthode de clustering k-means: 99,3 % d’efficacité contre 98,8 %.

2. Nous allons généraliser notre modèle de la régression logistique (partie testing) et l’utiliser pour la construction d’algorithme de détection des faux billets.

3. Parmi 1125 billets du dataframe d’entrainement 6 billets sont mal identifiés par l’application de tous les deux méthodes de détection des faux billets.
Cela fait 0,05 % des billets examinés.
Ainsi, on peut constater que les paramètres géométriques fournis ne sont pas suffisants pour déterminer la nature au minimum de 0,05% de billets distribués.



Déploiement du Testing

La généralisation désigne la capacité du modèle à pouvoir effectuer des prédictions robustes sur des nouvelles données.
En effet, la généralisation du modèle représente sa capacité, une fois entraîné, à effectuer des prédictions sur des données qu’il n’a jamais vues ; d’où la création d’un testing set pour évaluer cette capacité.

  • L’équilibre entre over- et underfitting est encore une composante à prendre en compte lors du choix et lors de l’entraînement du modèle.

  • L’over- ou l’underfitting se détecte grâce aux données test qu’on peut utiliser pour mesurer l’erreur du modèle, contrairement aux données d’entraînement qui pervertissent cette mesure.
    Source:https://openclassrooms.com/fr/courses/4011851-initiez-vous-au-machine-learning

Dans cette partie on va appliquer la mèthode de la régression logistique aux 25 % de jeu de données fourni dont étaient résérvés à la vérification de la fonctionnement de nos métodes.
Ainsi on peut on compare cette application avec l’entrainement éffectué en vue de vérifier notre travail .

Les premières lignes du data_test

Le jeu de données ‘data_test’
is_genuine diagonal height_left height_right margin_low margin_up length
3 1 172.69 104.48 103.50 4.40 2.94 113.16
14 1 172.20 104.35 103.67 4.44 3.38 113.65
15 1 172.06 103.87 103.83 4.09 2.92 113.19
21 1 171.87 103.91 103.96 3.74 2.97 113.59
22 1 171.82 103.65 103.64 4.25 2.80 112.57
23 1 172.10 103.96 103.71 3.93 2.89 112.68
La description des variables du data_test
is_genuine diagonal height_left height_right margin_low margin_up length
Min. :0.00 Min. :171.2 Min. :103.2 Min. :103.1 Min. :3.320 Min. :2.560 Min. :110.4
1st Qu.:0.00 1st Qu.:171.8 1st Qu.:103.8 1st Qu.:103.7 1st Qu.:4.000 1st Qu.:2.960 1st Qu.:112.1
Median :1.00 Median :171.9 Median :104.0 Median :103.9 Median :4.290 Median :3.120 Median :113.0
Mean :0.68 Mean :172.0 Mean :104.0 Mean :103.9 Mean :4.448 Mean :3.136 Mean :112.7
3rd Qu.:1.00 3rd Qu.:172.2 3rd Qu.:104.3 3rd Qu.:104.2 3rd Qu.:4.790 3rd Qu.:3.310 3rd Qu.:113.4
Max. :1.00 Max. :172.9 Max. :104.9 Max. :105.0 Max. :6.290 Max. :3.810 Max. :114.4




Application de la prévision

On applique notre modèle au jeu d’entrainement afin d’avoir une prevision de la nature des billets: 1 = Vrais , 0 = Faux
Maintenant notre dataframe a une colonne (“prediction”) en plus.
Prévision sur les premières lignes de la table ‘data_test’ dans la colone ‘prediction’
is_genuine diagonal height_left height_right margin_low margin_up length prediction
3 1 172.69 104.48 103.50 4.40 2.94 113.16 1
14 1 172.20 104.35 103.67 4.44 3.38 113.65 1
15 1 172.06 103.87 103.83 4.09 2.92 113.19 1
21 1 171.87 103.91 103.96 3.74 2.97 113.59 1
22 1 171.82 103.65 103.64 4.25 2.80 112.57 1
23 1 172.10 103.96 103.71 3.93 2.89 112.68 1

Comparaison du résultat de prévision avec la nature initiale de billets

On crée un tableau croisé des classes observées et prédites avec les statistiques associées:

  • prediction sur observation
  • Accuracy : 0.9929 : proportion du bon résultat de la prévision
  • P-Value : < 2.2 \(e^{-16}\) => moins 5%

Sur le graphique on a présenté les billets vrais par couleur bleu, les billets faux par violet et les billets mal-identifiés par couleur rouge.

## Confusion Matrix and Statistics
## 
##              
## prediction_lr   0   1
##             0 114   0
##             1   6 255
##                                           
##                Accuracy : 0.984           
##                  95% CI : (0.9655, 0.9941)
##     No Information Rate : 0.68            
##     P-Value [Acc > NIR] : < 2e-16         
##                                           
##                   Kappa : 0.9627          
##                                           
##  Mcnemar's Test P-Value : 0.04123         
##                                           
##             Sensitivity : 0.950           
##             Specificity : 1.000           
##          Pos Pred Value : 1.000           
##          Neg Pred Value : 0.977           
##              Prevalence : 0.320           
##          Detection Rate : 0.304           
##    Detection Prevalence : 0.304           
##       Balanced Accuracy : 0.975           
##                                           
##        'Positive' Class : 0               
## 

Proportionnalité des erreurs et visualisation des billets mal identifiés

La table des erreurs de la prévision
is_genuine diagonal height_left height_right margin_low margin_up length prediction vf
1026 0 172.17 104.20 104.13 3.86 3.38 112.44 1 faux identifié comme vrais
1084 0 171.85 103.60 103.82 4.60 3.21 112.50 1 faux identifié comme vrais
1104 0 171.88 104.05 103.75 4.41 3.21 112.52 1 faux identifié comme vrais
1161 0 172.39 104.05 104.32 4.13 3.41 112.66 1 faux identifié comme vrais
1282 0 171.62 104.53 103.64 4.89 3.16 112.54 1 faux identifié comme vrais
1413 0 172.25 103.94 103.68 4.14 3.25 112.48 1 faux identifié comme vrais

On a obtenu 6 billets mal- identifiés ce que correspond au 1.6 % d’erreurs.
Cette valeur est différente de celle dont on a déterminé avant mais c’est tout à fait normal pour le testing en accord avec la taille d’échantillon du test.

Réussité de la méthode
Var1 Freq
prévision correspond 0.984
prévision ne correspond pas 0.016
Matrix de confusion
Faux_billets_par_prediction Vrais_billets_par_prediction
Faux_billets 114 6
Vrais_billets 0 255
Le rapport de l’identification des billets en proportion
Var1 Freq
faux identifié comme vrais 0.016
juste 0.984



Tableau des billets mal identifiés
diagonal height_left height_right margin_low margin_up length vf
1026 172.17 104.20 104.13 3.86 3.38 112.44 faux identifié comme vrais
1084 171.85 103.60 103.82 4.60 3.21 112.50 faux identifié comme vrais
1104 171.88 104.05 103.75 4.41 3.21 112.52 faux identifié comme vrais
1161 172.39 104.05 104.32 4.13 3.41 112.66 faux identifié comme vrais
1282 171.62 104.53 103.64 4.89 3.16 112.54 faux identifié comme vrais
1413 172.25 103.94 103.68 4.14 3.25 112.48 faux identifié comme vrais



Algorithmede détection de faux billets

Affichage des premières lignes du jeu de données :

Jeu de données fourni
diagonal height_left height_right margin_low margin_up length id
171.76 104.01 103.54 5.21 3.3 111.42 A_1
171.87 104.17 104.13 6.0 3.31 112.09 A_2
172.0 104.58 104.29 4.99 3.39 111.57 A_3
172.49 104.55 104.34 4.44 3.03 113.2 A_4
171.65 103.63 103.56 3.77 3.16 113.33 A_5
##   diagonal height_left height_right margin_low margin_up length
## 1   171.76      104.01       103.54       5.21       3.3 111.42
## 2   171.87      104.17       104.13        6.0      3.31 112.09
## 3    172.0      104.58       104.29       4.99      3.39 111.57
## 4   172.49      104.55       104.34       4.44      3.03  113.2
## 5   171.65      103.63       103.56       3.77      3.16 113.33
##   diagonal height_left height_right margin_low margin_up length
## 1   171.76      104.01       103.54       5.21      3.30 111.42
## 2   171.87      104.17       104.13       6.00      3.31 112.09
## 3   172.00      104.58       104.29       4.99      3.39 111.57
## 4   172.49      104.55       104.34       4.44      3.03 113.20
## 5   171.65      103.63       103.56       3.77      3.16 113.33

Les billets identifiés comme faux

Les paramétres géométriques des billets identifiés faux
diagonal height_left height_right margin_low margin_up length
171.76 104.01 103.54 5.21 3.30 111.42
171.87 104.17 104.13 6.00 3.31 112.09
172.00 104.58 104.29 4.99 3.39 111.57
Description des paramétres géométriques des billets identifiés faux
Description des dimensionss
diagonal height_left height_right margin_low margin_up length
Min. :171.8 Min. :104.0 Min. :103.5 Min. :4.990 Min. :3.300 Min. :111.4
1st Qu.:171.8 1st Qu.:104.1 1st Qu.:103.8 1st Qu.:5.100 1st Qu.:3.305 1st Qu.:111.5
Median :171.9 Median :104.2 Median :104.1 Median :5.210 Median :3.310 Median :111.6
Mean :171.9 Mean :104.3 Mean :104.0 Mean :5.400 Mean :3.333 Mean :111.7
3rd Qu.:171.9 3rd Qu.:104.4 3rd Qu.:104.2 3rd Qu.:5.605 3rd Qu.:3.350 3rd Qu.:111.8
Max. :172.0 Max. :104.6 Max. :104.3 Max. :6.000 Max. :3.390 Max. :112.1

Précisions

Biais de détecttion de faux billets = 0,7 %